草庐IT

SQL INSERT INTO SELECT 语句

全部标签

mysql - 在存储过程外使用 if 语句

我正在尝试执行这段代码set@id=0;set@the_number=0;set@the_message=0;set@selected_message=0;SELECTid,dest_msisdn,text_messageINTO@id,@the_number,@the_messageFROMincoming_smswhereservice_id=6015592000101762ANDjob_status=0limit1;if(@the_messageLIKE'%Bank%')thenselect'h';endif;但我一直收到错误if(@the_messageLIKE'%Bank%'

php - MySql 在循环中准备语句

我想检查表中数组存储值的出现。像这样的数组:$myarray=array("122","123","124","125");我不想在查询中破坏数组,因为它不安全。SELECTledgerFROMmytableWHEREledgerIN('".implode("','",$myarray)."')为了安全起见,我想去准备声明。我尝试在for循环中运行查询,但失败了。$not=sizeof($myarray);for($i=0;$iprepare($qc);$st->bind_param("i",$myarray[$i]);$st->execute();$ro=$st->num_rows;

sql - 在 select 语句中更新表

有什么方法可以更新mysql选择查询的select_expr部分中的表。这是我要实现的目标的示例:SELECTid,name,(UPDATEtbl2SETcurrname=tbl.nameWHEREtbl2.id=tbl.id)FROMtbl;这让我在mysql中出错,但我不明白为什么只要我不更改tbl就不可能这样做。编辑:我将澄清为什么我不能为此使用普通结构。这是我正在处理的问题的更复杂示例:SELECTid,(SELECT@var=col1FROMtbl2),@var:=@var+1,(UPDATEtbl2SETcol1=@var)FROMtblWHERE...所以我基本上处于这样

php - 如何使用准备好的语句制作适当的 mysqli 扩展类?

我正在尝试扩展mysqli类以创建一个辅助类,该类将抽象出一些复杂性。我想要完成的主要事情之一是利用准备好的语句。我真的不知道从哪里开始,或者如何在一个类中正确处理输入和输出。另一个问题是我无法在使用准备语句时将数据输出为数组。我真的可以用一个简单的例子来指明正确的方向。 最佳答案 查看Zend_Db的实现,特别是Zend_Db_Select.事实上,您可能只是选择使用它而不是开发自己的。示例://connecttoadatabaseusingthemysqliadapter//forlistofothersupportedadap

php - PDO 更新不替换准备好的语句中的占位符

我正在尝试使用以下代码更新表格。如果我更改WHEREtemp_booking_id=':temp_booking_id'");以使用实际的当前sessiontemp_id,查询将运行,但将占位符添加到表中(例如:check-out)作为值。$data保存了正确的值,但没有替换占位符。我盯着这个看了好几个小时,但终究无法找出问题所在,环顾四周,但没有找到解决方案。PDOStatement:errorInfo()正在返回PDOStatement::errorInfo():Array([0]=>00000)如果我删除占位符周围的引号,它会返回PDOStatement::errorInfo()

mysql永久准备语句

我希望在高流量站点上使用准备好的语句来加速一些查询。我认为我没有正确理解的是使用准备好的语句的好处,除非它们可以通过多个连接保持准备状态。看起来这对于也不允许持久连接的PDO是不可能的。但持久连接功能不允许PDO。为了论证,假设我每秒运行5,000次查询:SELECT*FROMsome_tableWHEREsome_columnLIKE'some_value'据我了解,如果我每次需要查询时更改“some_value”,PDO将阻止mysql重新编译和评估查询。我也明白“some_value”可以用二进制而不是ASCII来传输以节省带宽,但如果我每次打开连接时都必须发送整个查询,它不会节

mysql - 如何在存储过程中使用准备好的语句分配变量?

我整理了一个简单的存储过程,其中传递了两个参数以使其更具动态性。我在“前两位数字和记录数”部分中使用准备好的语句完成了此操作。我不确定的是我是否也可以使用准备好的语句使SETvTotalFT部分动态化。目前我必须对表名和字段进行硬编码。我希望根据准备好的动态SQL语句分配我的vTotalFT变量,但我不确定语法。这个想法是,当我调用我的过程时,我可以告诉它要使用哪个表和哪个字段进行分析。CREATEPROCEDURE`sp_benfords_ft_digits_analysis`(vTablevarchar(255),vFieldvarchar(255))SQLSECURITYINVO

php - 将 LIKE 运算符与 % 一起用于 PDO 准备语句的关键字搜索

我正在尝试使用PDO准备语句编写关键字搜索。理想情况下,我想使用LIKE运算符来搜索字段值内的子字符串。这是我的代码:$statement=$this->db->prepare("select*fromwhateverwheretitlelike?orauthorlike?");$statement->execute(array("%$titleKeyword%","%$authorKeyword%"));$rows=$statement->fetchAll(PDO::FETCH_ASSOC);不幸的是,当我尝试这个时,$rows总是空的。但是,如果我将SQL复制到phpMyAdmin

MySQL - LONGTEXT 字段导致 SELECT-WHERE 语句挂起

由于LONGTEXT字段,我遇到了问题。一切正常,但是当执行带有任何WHERE子句的SELECT查询时,mysql进入休眠状态并且永远不会返回。只有80k条记录,显式WHERE比较工作正常。(有的记录超过1M,有的记录在700K左右,其他的只有60-100KB)。例如:[HANGs]SELECT*FROMitem_infoWHEREadded_on>'2013-02-1419:40:05'ANDadded_on这是正常行为吗?这是架构:CREATETABLE`item_info`(`item_id`bigint(20)NOTNULLAUTO_INCREMENT,`title_md5`v

mysql - 处理 MySQL CASE 语句中的空集

MySQL服务器版本5.0.45。请考虑以下事项:(SELECTCASEWHENt.group_id=12THEN'yes'ELSE'no'ENDFROMsample_tabletWHEREt.user_id=2ANDt.group_id=12)asfoo这个较大语句的子查询按我的预期工作,大部分时间产生"is"或“否”字符串值。这并不理想,但这就是您处理其他人的代码所得到的!但是,有时select可以合法地返回一个空集,在这种情况下foo被设置为NULL。这实际上并没有破坏应用程序,但它很烦人。有没有一种方法可以保证foo始终为"is"或“否”,即使表中没有匹配的行?